﻿// -----------------------------------------------------------------------
// <copyright file="ObjectInstance.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
// -----------------------------------------------------------------------

namespace GenericMethodInvoker.XmlConfigReader
{
    using System.Collections.Generic;

    /// <summary>
    /// Represents Parameter Configuration
    /// </summary>
    public class ObjectInstance
    {
        /// <summary>
        /// Gets or sets the name of the parameter.
        /// </summary>
        /// <value>
        /// The name of the parameter.
        /// </value>
        public string ObjectName { get; set; }

        /// <summary>
        /// Gets or sets the parameter value.
        /// </summary>
        /// <value>
        /// The parameter value.
        /// </value>
        public string ObjectValue { get; set; }

        /// <summary>
        /// Gets or sets the type of the parameter.
        /// </summary>
        /// <value>
        /// The type of the parameter.
        /// </value>
        public string ObjectType { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is static.
        /// </summary>
        /// <value>
        ///   <c>true</c> if this instance is static; otherwise, <c>false</c>.
        /// </value>
        public bool IsStatic { get; set; }

        /// <summary>
        /// Gets or sets the parameter assembly.
        /// </summary>
        /// <value>
        /// The parameter assembly.
        /// </value>
        public string ObjectAssembly { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [to initialize through constructor].
        /// </summary>
        /// <value>
        ///     <c>true</c> if [initialize through constructor]; otherwise, <c>false</c>.
        /// </value>
        public bool InitializeThroughConstructor { get; set; }
        
        /// <summary>
        /// Gets or sets the methods.
        /// </summary>
        /// <value>
        /// The methods.
        /// </value>
        public List<MethodCall> MethodCalls { get; set; }

        /// <summary>
        /// Gets or sets the properties.
        /// </summary>
        /// <value>
        /// The properties.
        /// </value>
        public List<ObjectInstance> Properties { get; set; }

        /// <summary>
        /// Gets or sets the constructor parameters.
        /// </summary>
        /// <value>
        /// The constructor parameters.
        /// </value>
        public List<ObjectInstance> ConstructorParams { get; set; }
    }
}
